Telegram Group & Telegram Channel
🧵 Сегодня покажу вам простой, но полезный приём для оптимизации копирования std::vector.

Часто вижу такую конструкцию:


std::vector<int> result;
result = getVector();


Если getVector() возвращает временный объект, то копирование можно избежать, используя std::move или Return Value Optimization (RVO).

Но вот интересное: если вы точно знаете, что копия не нужна, используйте std::vector::swap с временным объектом:


std::vector<int> result;
std::vector<int> tmp = getVector();
result.swap(tmp);


Почему это может быть лучше?
🔸 Быстрая реализация через указатели.
🔸 Не вызывает лишние аллокаторы.
🔸 Не зависит от move конструктора.
🔸 Гарантированно не бросает исключений, если swap noexcept (что обычно так).

В новых компиляторах result = std::move(tmp) даст тот же эффект, но swap — это старый добрый способ, который работает предсказуемо.

🧠 Подумайте, где можно применить это у себя — особенно если работаете с большими контейнерами.

➡️ @cpp_geek



tg-me.com/cpp_geek/312
Create:
Last Update:

🧵 Сегодня покажу вам простой, но полезный приём для оптимизации копирования std::vector.

Часто вижу такую конструкцию:


std::vector<int> result;
result = getVector();


Если getVector() возвращает временный объект, то копирование можно избежать, используя std::move или Return Value Optimization (RVO).

Но вот интересное: если вы точно знаете, что копия не нужна, используйте std::vector::swap с временным объектом:


std::vector<int> result;
std::vector<int> tmp = getVector();
result.swap(tmp);


Почему это может быть лучше?
🔸 Быстрая реализация через указатели.
🔸 Не вызывает лишние аллокаторы.
🔸 Не зависит от move конструктора.
🔸 Гарантированно не бросает исключений, если swap noexcept (что обычно так).

В новых компиляторах result = std::move(tmp) даст тот же эффект, но swap — это старый добрый способ, который работает предсказуемо.

🧠 Подумайте, где можно применить это у себя — особенно если работаете с большими контейнерами.

➡️ @cpp_geek

BY C++ geek


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/cpp_geek/312

View MORE
Open in Telegram


C geek Telegram | DID YOU KNOW?

Date: |

How To Find Channels On Telegram?

There are multiple ways you can search for Telegram channels. One of the methods is really logical and you should all know it by now. We’re talking about using Telegram’s native search option. Make sure to download Telegram from the official website or update it to the latest version, using this link. Once you’ve installed Telegram, you can simply open the app and use the search bar. Tap on the magnifier icon and search for a channel that might interest you (e.g. Marvel comics). Even though this is the easiest method for searching Telegram channels, it isn’t the best one. This method is limited because it shows you only a couple of results per search.

C geek from us


Telegram C++ geek
FROM USA